package com.zz.ecommerce.pojo;

import com.zz.bundles.cache.dict.DictTag;
import com.zz.ecommerce.utils.SqlType;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 运单(放行)
 */
public class CbecLogistics implements Serializable {
    private static final long serialVersionUID = 171459984356098062L;

    /**
     * 唯一主键
     */
    private String id;

    /**
     * 物流企业代码。物流企业的海关备案编码（18位）
     */
    private String logisticsCode;

    /**
     * 物流企业名称。物流企业的海关备案名称
     */
    private String logisticsName;

    /**
     * 物流运单编号。物流企业的运单包裹面单号
     */
    private String logisticsNo;

    /**
     * 提运单号。直购进口为海运提单或空运总单
     */
    private String billNo;

    /**
     * 运费。货物运输费用
     */
    private BigDecimal freight;

    /**
     * 保价费。货物保险费用
     */
    private BigDecimal insuredFee;

    /**
     * 币制
     */
    private String currency;

    /**
     * 毛重。单位为千克
     */
    private BigDecimal grossWeight;

    /**
     * 件数。单个运单下包裹数
     */
    private Integer packNo;

    /**
     * 主要货物信息。物流企业可知的商品信息
     */
    private String goodsInfo;

    /**
     * 收货人姓名
     */
    private String consignee;

    /**
     * 收货人地址
     */
    private String consigneeAddr;

    /**
     * 收货人电话
     */
    private String consigneePhone;

    /**
     * 备注
     */
    private String note;

    /**
     * 版本号（默认1.0）
     */
    private String version;

    /**
     * 系统唯一序号（36位  英文字母大写）
     */
    private String guid;

    /**
     * 业务时间,格式:YYYYMMDDhhmmss
     */
    @SqlType(type = "date", format = "yyyy-mm-dd hh24:mi:ss", qryStart = "appDateStart", qryEnd = "appDateEnd")
    private String appDate;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String appDateStart;

    @SqlType(inTable = false, type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String appDateEnd;

    /**
     * 接入平台编号
     */
    private String appSenderId;

    /**
     * 最后修改时间
     */
    @SqlType(type = "date", format = "yyyy-mm-dd hh24:mi:ss")
    private String lastModifyDate;

    /**
     * 创建时间，引用清单的申报日期
     */
    @SqlType(type = "date", format = "yyyy-mm-dd hh24:mi:ss")
    private String createDate;

    private String orgId;

    /**
     * 回执状态
     */
    private String status;

    /**
     * 回执时间
     */
    @SqlType(type = "date", format = "yyyy-MM-dd hh24:mi:ss")
    private String statusTime;

    public String getOrgId() {
        return orgId;
    }

    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }

    /**
     * @return 唯一主键
     */
    public String getId() {
        return id;
    }

    /**
     * @param id 唯一主键
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return 物流企业代码。物流企业的海关备案编码（18位）
     */
    public String getLogisticsCode() {
        return logisticsCode;
    }

    /**
     * @param logisticsCode 物流企业代码。物流企业的海关备案编码（18位）
     */
    public void setLogisticsCode(String logisticsCode) {
        this.logisticsCode = logisticsCode;
    }

    /**
     * @return 物流企业名称。物流企业的海关备案名称
     */
    public String getLogisticsName() {
        return logisticsName;
    }

    /**
     * @param logisticsName 物流企业名称。物流企业的海关备案名称
     */
    public void setLogisticsName(String logisticsName) {
        this.logisticsName = logisticsName;
    }

    /**
     * @return 物流运单编号。物流企业的运单包裹面单号
     */
    public String getLogisticsNo() {
        return logisticsNo;
    }

    /**
     * @param logisticsNo 物流运单编号。物流企业的运单包裹面单号
     */
    public void setLogisticsNo(String logisticsNo) {
        this.logisticsNo = logisticsNo;
    }

    /**
     * @return 提运单号。直购进口为海运提单或空运总单
     */
    public String getBillNo() {
        return billNo;
    }

    /**
     * @param billNo 提运单号。直购进口为海运提单或空运总单
     */
    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    /**
     * @return 运费。货物运输费用
     */
    public BigDecimal getFreight() {
        return freight;
    }

    /**
     * @param freight 运费。货物运输费用
     */
    public void setFreight(BigDecimal freight) {
        this.freight = freight;
    }

    /**
     * @return 保价费。货物保险费用
     */
    public BigDecimal getInsuredFee() {
        return insuredFee;
    }

    /**
     * @param insuredFee 保价费。货物保险费用
     */
    public void setInsuredFee(BigDecimal insuredFee) {
        this.insuredFee = insuredFee;
    }

    /**
     * @return 币制
     */
    public String getCurrency() {
        return currency;
    }

    /**
     * @return 币制
     */
    public String getCurrencyDisplay() {
        return DictTag.getCargoParamVal("S_CURRENCY_E", currency, "CODE_C", "NAME_C");
    }

    /**
     * @param currency 币制
     */
    public void setCurrency(String currency) {
        this.currency = currency;
    }

    /**
     * @return 毛重。单位为千克
     */
    public BigDecimal getGrossWeight() {
        return grossWeight;
    }

    /**
     * @param grossWeight 毛重。单位为千克
     */
    public void setGrossWeight(BigDecimal grossWeight) {
        this.grossWeight = grossWeight;
    }

    /**
     * @return 件数。单个运单下包裹数
     */
    public Integer getPackNo() {
        return packNo;
    }

    /**
     * @param packNo 件数。单个运单下包裹数
     */
    public void setPackNo(Integer packNo) {
        this.packNo = packNo;
    }

    /**
     * @return 主要货物信息。物流企业可知的商品信息
     */
    public String getGoodsInfo() {
        return goodsInfo;
    }

    /**
     * @param goodsInfo 主要货物信息。物流企业可知的商品信息
     */
    public void setGoodsInfo(String goodsInfo) {
        this.goodsInfo = goodsInfo;
    }

    /**
     * @return 收货人姓名
     */
    public String getConsignee() {
        return consignee;
    }

    /**
     * @param consignee 收货人姓名
     */
    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    /**
     * @return 收货人地址
     */
    public String getConsigneeAddr() {
        return consigneeAddr;
    }

    /**
     * @param consigneeAddr 收货人地址
     */
    public void setConsigneeAddr(String consigneeAddr) {
        this.consigneeAddr = consigneeAddr;
    }

    /**
     * @return 收货人电话
     */
    public String getConsigneePhone() {
        return consigneePhone;
    }

    /**
     * @param consigneePhone 收货人电话
     */
    public void setConsigneePhone(String consigneePhone) {
        this.consigneePhone = consigneePhone;
    }

    /**
     * @return 备注
     */
    public String getNote() {
        return note;
    }

    /**
     * @param note 备注
     */
    public void setNote(String note) {
        this.note = note;
    }

    /**
     * @return 版本号（默认1.0）
     */
    public String getVersion() {
        return version;
    }

    /**
     * @param version 版本号（默认1.0）
     */
    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * @return 系统唯一序号（36位  英文字母大写）
     */
    public String getGuid() {
        return guid;
    }

    /**
     * @param guid 系统唯一序号（36位  英文字母大写）
     */
    public void setGuid(String guid) {
        this.guid = guid;
    }

    /**
     * @return 业务时间, 格式:YYYYMMDDhhmmss
     */
    public String getAppDate() {
        return appDate;
    }

    /**
     * @param appDate 业务时间,格式:YYYYMMDDhhmmss
     */
    public void setAppDate(String appDate) {
        this.appDate = appDate;
    }

    /**
     * @return 接入平台编号
     */
    public String getAppSenderId() {
        return appSenderId;
    }

    /**
     * @param appSenderId 接入平台编号
     */
    public void setAppSenderId(String appSenderId) {
        this.appSenderId = appSenderId;
    }

    /**
     * @return 最后修改时间
     */
    public String getLastModifyDate() {
        return lastModifyDate;
    }

    /**
     * @param lastModifyDate 最后修改时间
     */
    public void setLastModifyDate(String lastModifyDate) {
        this.lastModifyDate = lastModifyDate;
    }

    /**
     * @return 创建时间，引用清单的申报日期
     */
    public String getCreateDate() {
        return createDate;
    }

    /**
     * @param createDate 创建时间，引用清单的申报日期
     */
    public void setCreateDate(String createDate) {
        this.createDate = createDate;
    }

    public String getAppDateStart() {
        return appDateStart;
    }

    public void setAppDateStart(String appDateStart) {
        this.appDateStart = appDateStart;
    }

    public String getAppDateEnd() {
        return appDateEnd;
    }

    public void setAppDateEnd(String appDateEnd) {
        this.appDateEnd = appDateEnd;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatusTime() {
        return statusTime;
    }

    public void setStatusTime(String statusTime) {
        this.statusTime = statusTime;
    }
}